#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[100];
int n;
int len[55];
int d;
int pre[100];
void dfs(int gs,int sy,int zx){
    if(sy==0){
        dfs(gs-1,d,a[n]);
    }
    if(gs==0){
        cout<<d;
        exit(0);
    }
    zx=(zx<sy)?zx:sy;
    while(zx&&len[zx]==0)zx--;
    while(zx)
    { 
        if(len[zx]){
        len[zx]--;
        dfs(gs,sy-zx,zx);
        len[zx]++;
        if((zx==sy)||(sy==d)){
            return;
        }
        zx=pre[zx];
    }
    else zx=pre[zx];
    }
   
}

int main(){
   
    cin>>n;
    int sum=0;
    int maxn=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum+=a[i];
        len[a[i]]++;
    }
    sort(a+1,a+1+n);
    for(int i=1;i<=n;i++){
        if(!pre[a[i]]&&a[i]!=a[i-1])pre[a[i]]=a[i-1];
    }
    for( d=a[n];(d<<1)<=sum;d++)
{
    if((sum%d))continue;
    dfs(sum/d,d,a[n]);
}
cout<<sum;
return 0;
}